﻿namespace Vin.Extension.Framework.AntChain.Dto;

public class AntChainNotifyModel
{
    /// <summary>
    /// 消息类型
    /// 异步解约申请：ASYNC_UNSIGN_APPLY
    /// 代扣签约状态变化：WITHHOLD_SIGN_STATUS_CHANGE
    /// 用户履约记录：USER_FULFILLMENT_LOG
    /// 商户履约记录：MERCHANT_FULFILLMENT_LOG
    /// 融资状态变化，ORDER_FINANCING_STATUS_CHANGE
    /// 合同签署流程结束：AGREEMENT_SIGN_FLOW_FINISH
    /// 融资异步预审结果同步，ORDER_FINANCING_ASYNC_PRECHECK_RESULT
    /// 保单的投保结果，ORDER_INSURE_RESULT
    /// </summary>
    public string? MsgType { get; set; }

    /// <summary>
    /// 订单id
    /// </summary>
    public string? OrderId { get; set; }
    
    /// <summary>
    /// 订单所属商户的社会信用代码
    /// </summary>
    public string? MerchantId { get; set; }
    
    /// <summary>
    /// 消息id，一个消息生成唯一的id 即使消息重投、该字段也不会变动
    /// </summary>
    public string? MsgId { get; set; }
    
    /// <summary>
    /// traceId， 每一次投递生成唯一id 消息重投后、该字段会变化
    /// </summary>
    public string? TraceId { get; set; }
    
    /// <summary>
    /// 投递次数
    /// </summary>
    public string? Cnt { get; set; }
    
    /// <summary>
    /// 资金类型 NON_FINANCE : 非融,FINANCE : 融资,FINANCE_SELF : 融资自持
    /// </summary>
    public string? FundType { get; set; }
    
    /// <summary>
    /// 投递角色方 MERCHANT : 商户,FINANCIER ： 资金方
    /// </summary>
    public string? SendToRole { get; set; }
    
    /// <summary>
    ///协议当前状态  1.SIGNED：已签约； 2.TERMINATED：已解约； 3.TIMEOUT_CLOSE：超时关闭；
    /// </summary>
    public string? Status { get; set; }
    
    /// <summary>
    /// 支付宝协议签约号 status=SIGNED时有值
    /// </summary>
    public string? AlipayAgreementNo { get; set; }
    
    /// <summary>
    /// 协议签约时间 格式为yyyy-MM-dd hh:mm:ss status=SIGNED时有值
    /// </summary>
    public DateTime? SignTime { get; set; }
    
    /// <summary>
    /// 协议生效时间 格式为yyyy-MM-dd hh:mm:ss status=SIGNED时有值
    /// </summary>
    public DateTime? ValidTime { get; set; }
    
    /// <summary>
    /// 协议失效时间 格式为yyyy-MM-dd hh:mm:ss status
    /// </summary>
    public DateTime? InvalidTime { get; set; }
    
    /// <summary>
    /// 剩余归还期数
    /// </summary>
    public int? RemainTerm { get; set; }
    
    /// <summary>
    /// 总期数
    /// </summary>
    public int? TotalTerm { get; set; }
    
    /// <summary>
    /// USER_FULFILLMENT_LOG：当前租期编号
    /// MERCHANT_FULFILLMENT_LOG： 对应的用户履约期数编号 可能为负数，负数的解释： 如果总履约期数为12，但是在13期进行分账，此时lease_term_index=-1 同理，如果是14期进行分账，lease_term_index=-2
    /// </summary>
    public int? LeaseTermIndex { get; set; }
    
    /// <summary>
    /// 租金归还状态，RETURN_FULL : 足额归还 【终态】,NOT_RETURN : 未归还,CANCEL : 取消 【终态】,OVERDUE : 逾期 【终态】
    /// </summary>
    public string? RentalReturnState { get; set; }
    
    /// <summary>
    /// 租金归还金额,精确到分，即1234表示12.34元
    /// </summary>
    public long? RentalMoney { get; set; }
    
    /// <summary>
    /// 罚息金额，分，1234表示12.34元
    /// </summary>
    public long? PenaltyFeeMoney { get; set; }
    
    /// <summary>
    /// 应还总金额 = 归还金额 + 罚息 + 手续费（当前为0）
    /// 放款总金额，单位为分 100代表1元, order_financing_status=DISBURSED 存在该字段
    /// </summary>
    public long? TotalMoney { get; set; }
    
    /// <summary>
    /// 用户实还金额，精确到分，1234表示12.34元 取消和逾期下，该字段可能不存在
    /// </summary>
    public long? RealRepayMoney { get; set; }
    
    /// <summary>
    /// 支付完成时间，格式为"2019-07-31 12:00:00" yyyy-MM-dd HH:mm:ss 取消和逾期下，该字段可能不存在
    /// 实际还款时间，yyyy-MM-dd HH:mm:ss
    /// </summary>
    public DateTime? ReturnTime { get; set; }
    
    /// <summary>
    /// 归还方式  取消和逾期下，该字段可能不存在 足额归还的某些场景，该字段可能不存在
    /// CASH : 现金归还,ANTDIGITAL： 数科周期性代扣,ANTDIGITAL_ACTIVE: 数科代扣主动支付,FUND : 资方周期性代扣
    /// FUND_ACTIVE: 资方主动支付,BANK : 银行转账,WECHAT : 微信支付,ALIPAY : 支付宝支付,SHARE_PROFITS : 收入分账,MERCHANT_COMPENSATION : 商户代偿
    /// </summary>
    public string? ReturnWay { get; set; }
    
    /// <summary>
    /// 支付交易流水号 取消和逾期下，该字段可能不存在  足额归还的某些场景，该字段可能不存在
    /// </summary>
    public string? ReturnVoucherSerial { get; set; }
    
    /// <summary>
    /// 蚂蚁代扣失败原因，可能为空
    /// </summary>
    public string? AntdigitalFailMsg { get; set; }
    
    /// <summary>
    /// 蚂蚁代扣时的支付宝交易流水号
    /// </summary>
    public string? AlipayTradeNo { get; set; }
    
    /// <summary>
    /// 银行名称  取消和逾期下，该字段可能不存在
    /// </summary>
    public string? BankName { get; set; }
    
    /// <summary>
    /// 融资方的社会信用代码
    /// 资方id
    /// </summary>
    public string? FundId { get; set; }
    
    /// <summary>
    /// 当前分账账期编号
    /// </summary>
    public string? TermIndex { get; set; }
    
    /// <summary>
    /// 实际还款金额,精确到分，即1234表示12.34元 取消下，该字段可能不存在
    /// </summary>
    public long? ReturnMoney { get; set; }
    
    /// <summary>
    /// 还款流水号 取消下，该字段可能不存在
    /// </summary>
    public string? ReturnSerialNumber { get; set; }
    
    /// <summary>
    /// 取消还款原因 成功下、该字段可能不存在
    /// ACTIVE_REDEEM ： 自主赎回,RENTING_OUT_REDEEM ： 退租赎回,RENTING_AND_RESALE_REDEEM ： 租转售赎回
    /// </summary>
    public string? RentalReturnCancelReason { get; set; }
    
    /// <summary>
    /// 订单融资 融资失败：FAIL,已放款：DISBURSED,融资履约完成：FULFILLMENT_COMPLETED,融资已赎回：REDEEMED
    /// </summary>
    public string? OrderFinancingStatus { get; set; }
    
    /// <summary>
    ///	资产包id
    /// </summary>
    public string? AssestPackageId { get; set; }
    
    /// <summary>
    /// 失败原因
    /// </summary>
    public string? FailReason { get; set; }
    
    /// <summary>
    /// 资方租户id
    /// </summary>
    public string? FundTeanntId { get; set; }
    
    /// <summary>
    /// 放款时间，yyyy-MM-dd HH:mm:ss order_financing_status=DISBURSED 存在该字段
    /// </summary>
    public DateTime? LoanTime { get; set; }
    
    /// <summary>
    /// 签署单号
    /// </summary>
    public string? SignNo { get; set; }
    
    /// <summary>
    /// 流程单号
    /// </summary>
    public string? FlowId { get; set; }
    
    /// <summary>
    /// 签署文件主题描述
    /// </summary>
    public string? SignFlowTitle { get; set; }
    
    /// <summary>
    /// 流程状态 FINISH 已完成,UNDO 已撤销,EXPIRE 已过期,REJECTED 已拒签
    /// </summary>
    public string? FlowStatus { get; set; }
    
    /// <summary>
    /// 流程开始时间，格式为yyyy-MM-dd HH:mm:ss   
    /// </summary>
    public DateTime? CreateTime { get; set; }
    
    /// <summary>
    /// 流程结束时间，格式为yyyy-MM-dd HH:mm:ss
    /// </summary>
    public DateTime? EndTime { get; set; }
    
    /// <summary>
    /// 预审结果 通过： APPROVAL 拒绝： REFUSE
    /// </summary>
    public string? PrecheckResult { get; set; }
    
    /// <summary>
    /// 拒绝的原因（可能为空）
    /// </summary>
    public string? RefuseReason { get; set; }
    
    /// <summary>
    /// 投保结果：INSURE_PRE_SUCC：预投保成功 INSURE_PRE_FAIL：预投保失败  WITHHOLD_SUCC：代扣成功  WITHHOLD_FAIL：代扣失败  INSURE_SUCC：投保成功
    /// </summary>
    public string? InsureResult { get; set; }
    
    /// <summary>
    /// 保单号 注：只有insure_result为INSURE_SUCC（投保成功）时，才有保单号。
    /// </summary>
    public string? InsureId { get; set; }
    
    /// <summary>
    /// 投保错误码 1、只有失败情况下（insure_result字段为INSURE_PRE_FAIL或WITHHOLD_FAIL），才有值。 2、枚举值： INSURE_PRE_FAIL：预投保失败 WITHHOLD_FAIL：代扣失败，需用户主动重试
    /// </summary>
    public string? InsureErrorCode { get; set; }
    
    /// <summary>
    ///投保错误信息描述 1、只有失败情况下（insure_result字段为INSURE_PRE_FAIL或WITHHOLD_FAIL），才有值。 2、具体场景的失败信息
    /// </summary>
    public string? InsureErrorMsg { get; set; }
}